/*************************************************
* 描述：表格公共数据定义
 *
 * File：head.h
 * Author：zhangzhiming@mozihealthcare.cn
 * Date：25-10-15
 * Update：
 * ************************************************/
#ifndef HEAD_H
#define HEAD_H
#include <QString>
#include <QColor>

namespace cxitable
{
    /**
     * 标题配置预定义占位符：
     *
     */
    // 分组值
    const QString DATA = "${data}";
    // 分组标题
    const QString TITLE = "${title}";
    // 分组统计
    const QString COUNT = "${count}";

    /**
     * 表格分组配置
     */
    struct GroupConfig
    {
        // 分组列
        int column;
        // 分组标题
        QString groupTitle;
    };

    /**
     * 表格列委托类型
     */
    enum class ItemDelegateType : int
    {
        // 默认
        Default,
        // 文本框
        TextBox,
        // 复选框
        CheckBox,
        // 下拉框
        ComboBox,
        // 下拉表格框
        TableComboBox,
        // 按钮
        Button,
        // 日期
        Date,
        // 时间
        Time,
        // 日期+时间
        DateTime
    };

    /**
     * 表格列下拉框数据项
     */
    struct ComboBoxItem
    {
        QString key;
        QString text;
        bool isSelected = false;
    };

    /**
     * 表格列配置
     */
    struct GridColumnConfig
    {
        QString field;
        QString caption;
        int width;
        bool visible;
        int visibleIndex;
        QString format;
        bool readOnly;
        bool fix;
        bool autoWidth;
        ItemDelegateType style;
        bool floatCellContent;
        QColor headForeColor;
        QColor headBackColor;
        Qt::Alignment textAlignment;
        bool isBold;

        GridColumnConfig(const QString& field, const QString& caption)
            : field(field),
              caption(caption),
              width(100),
              visible(true),
              visibleIndex(0),
              readOnly(false),
              fix(false),
              autoWidth(false),
              style(ItemDelegateType::Default),
              floatCellContent(false),
              isBold(false)
        {
        }

        GridColumnConfig(const QString& field, const QString& caption, ItemDelegateType style)
            : field(field),
              caption(caption),
              width(100),
              visible(true),
              visibleIndex(0),
              readOnly(false),
              fix(false),
              autoWidth(false),
              style(style),
              floatCellContent(false),
              isBold(false)
        {
        }
    };
}
#endif //HEAD_H